insert into asm_switch_2
select codice_allacciamento,progressivo_utenza,'','',
case when min(data) is null then to_date('01/01/0001','dd/mm/yyyy') else trunc(min(data)) end data,codice_contratto,fattore_correttivo
from(

select fo.codice_allacciamento,fo.progressivo_utenza,fo.codice_contratto,
       (select distinct min(cm.data_movimento) from db1.contatori_movimenti cm 
                   where cm.codice_contratto = fo.codice_contratto
                  
                   and cm.codice_gestione = fo.codice_gestione
                   and cm.codice_servizio = fo.codice_servizio
                   group by cm.codice_contratto) data,fo.fattore_correttivo
 from db1.forniture fo,db1.contratti co,ASM_switch sw
 
 
 where fo.codice_gestione = 'ASM' and fo.codice_servizio = 'E'

 and co.codice_gestione = fo.codice_gestione
 and co.codice_servizio = fo.codice_servizio

 and co.codice_contratto = fo.codice_contratto
 
 AND sw.DB  = 'db1'
 and sw.pod =concat('IT018E',concat(substr(concat('000000',fo.codice_allacciamento(+)),-7,7),
            substr(concat('000000',fo.progressivo_utenza(+)),-1,1)))
 
--and codice_allacciamento = 1004314 and progressivo_utenza = 1
)

group by
codice_allacciamento,progressivo_utenza,codice_contratto,fattore_correttivo